// 内置模块也就是上面说到的 NodeJs 自己新增的内容。

// 这些内容都在官网的文档中能找到 https://nodejs.org/docs/latest/api/。

// 内置模块的使用不需要下载，直接引入就可以使用。

// 比如 process 模块，Dns 模块，Path 模块等等。



// 内置模块都是需要引入的，但是不需要安装
// 需要用require关键字进行引入。require的方式叫CommonJs模块化规范
// require后面的括号要加引号，表示是包的名字
// 前面用变量接受，是不能加引号
const dns = require("dns"); // 名称解析。例如，使用它来查找主机名的 IP 地址。

// dns.resolve4('www.baidu.com', (err, addresses) => {
//   // nodejs大量的使用了错误优先的回调函数来做异步
//   if (err) throw err;
//   // addresses就是百度的ip地址
//   console.log(addresses); // [ '180.101.50.242', '180.101.50.188' ]
// });

const readDns = (url) => {
  return new Promise((resolve, reject) => {
    dns.resolve4(url, (err, addresses) => {
      if (err) {
        reject(err);
      };
      resolve(addresses)
    });
  })
}
// readDns('www.baidu.com').then(addresses => {
//   console.log(addresses);
// }).catch(err => {
//   throw err;
// })
const fn = async () => {
  try {
    const addresses = await readDns('www.baidu.com');
    console.log(addresses);
  } catch (error) {
    throw error;
  }
}
fn()


dns.resolve6('www.baidu.com', (err, addresses) => {
  // nodejs大量的使用了错误优先的回调函数来做异步
  if (err) throw err;
  // addresses就是百度的ip地址
  console.log(addresses); // [ '180.101.50.242', '180.101.50.188' ]
});





// const process = require('process');
// process 对象提供有关当前 Node.js 进程的信息并对其进行控制。
// console.log(process);





const path = require("path");
// path 模块提供了用于处理文件和目录的路径的实用工具。
console.log(path.resolve("/aaa", "/bbb"));
console.log(path.resolve("/aaa", "bbb"));
console.log(__dirname); // C:\Users\wang\Desktop\数产理\0927 表示我当前这个文件所在的目录
console.log(path.resolve(__dirname, "./01-运行nodejs代码.js"));
console.log(path.resolve(__dirname, "./01-运行nodejs代码.js"));
console.log(path.resolve(__dirname, "../0926/01-数据请求.html"));

console.log(path.extname("01-数据请求.html")); // .html
console.log(path.extname("01-a.b.c.html")); // .html



